# -*- coding:utf-8 -*-
# 首先第一步声明编码格式
# 第二步导入单元测试模块
# 脚本核心, 每一个模块写错一个单元测试(TestCase),最后将所有的单元测试加入到测试套件里面(TestSuit)
# 第三步: 写一个类继承unittest里面的TestCase
# 第四步: 重写连个方法测试用例执行的之前的方法 setUp,测试用例执行之后的方法TearDown
import unittest
from selenium import webdriver

import time

# 定义一个类叫Login,在Python里面,类继承父类使用类名后面加()里面写入继承的父类

class Login(unittest.TestCase):

    #测试用例执行之前执行的方法 setUp
    def setUp(self):

        # 在这里一般用来帮我们打开浏览器
        self.deriver = webdriver.Firefox()
        # 设置窗口最大化
        self.deriver.maximize_window()
        # 输入网址
        self.deriver.get("https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eba8ac7d_0_371facd85af843e78f62cefe3387619d")

        # 只能休眠 注意这里写10秒,一共休眠10秒,如果在2秒的时候浏览器加载完成,直接就会执行下面的代码,不会再休眠
        self.deriver.implicitly_wait(10)

        # 注意 pass是占位符,没有任何意义
        pass

    #测试用例执行之后执行的方法
    def tearDown(self):

        # 在这里一般用来帮我们关闭浏览器
        self.deriver.quit()

        pass


    # #注意测试用例的方法是以test开头
    # def test_us_em_pw_Em(self):
    #
    #     self.login_ab_r = self.deriver.find_element_by_class_name("login-tab-r")
    #     self.login_btn = self.deriver.find_element_by_class_name("login-btn")
    #
    #     # 点击第一个按钮切换页面
    #     self.login_ab_r.click()
    #
    #     # 点击第二个按钮登陆
    #     self.login_btn.click()
    #
    #     # 注意应酬的空间是查找不到的,所以我需要智能休眠
    #     self.deriver.implicitly_wait(5)
    #     # 点击完成登陆以后,查找控件
    #     self.msg = self.deriver.find_element_by_class_name("msg-error")
    #     # 获取控件里面的内容
    #     self.message = self.msg.text
    #
    #     # 进行断言(注意断言的目的就是看一下和我希望的结果是不是一致,如果一致就是通过,不一致就是测试用例不通过)
    #     self.assertEqual(self.message,u"请输入账户名和密码")
    #     pass

    # #点击图片的测试用例
    # def test_welcom_login(self):
    #
    #     # 查找图片的控件
    #     self.logo = self.deriver.find_element_by_xpath("//div[@id = 'logo']/a/img")
    #
    #     # 点击logo
    #
    #     self.logo.click()
    #
    #     # 休眠2秒
    #     self.deriver.implicitly_wait(2)
    #
    #     self.title = self.deriver.title
    #
    #     # 进行断言
    #     self.assertEqual(self.title,u"京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物！")
    #
    #     pass

    #登陆页面问卷调查
    def test_login_research(self):

        # 查找登陆页面调查
        self.q_link = self.deriver.find_element_by_link_text("登录页面，调查问卷")

        # 获取当前窗口
        current_window = self.deriver.current_window_handle

        # 进行点击
        self.q_link.click();

        # 休眠五秒
        self.deriver.implicitly_wait(5)

        # 获取当前浏览器里面所有的窗口 返回的是list列表
        all_windows  = self.deriver.window_handles


        # 使用for循环进行遍历,同时切换到新窗口
        for window in all_windows:

            # 切换到当前窗口
            if current_window != window:
                # 切换到当前窗口
                self.deriver.switch_to_window(window)
                #获取title,进行断言
                # 切换窗口
                # 获取当前所有页面的窗口
                self.rearch = self.deriver.title

                # 进行断言
                self.assertEqual(self.rearch, u"登录页满意度调查")



        pass

# web脚本使用的东西 pyhton + selenium2+ 单元测试 + 断言(注意断言是在测试用例里面用的) + 测试套件 + 自动化测试国宝




